<?php

/**
 * 公共控制器
 */

namespace variant\core;

class Controller {

	/**
	 * 公共布局
	 * @var null 模板路径
	 */
	public $layout = NULL;

	/**
	 * 实例化公共控制器
	 */
	public function __construct() {
        //执行初始化
        if(method_exists($this,'init')){
            $this->init();
        }
	}

	/**
	 * 模板赋值
	 * @param  string $name  变量名
	 * @param  mixed  $value 变量值
	 * @return void
	 */
	public function assign($name, $value=NULL) {
		return $this->_getView()->assign( $name, $value);
	}

	/**
	 * 模板输出
	 * @param  string  $tpl    模板名
	 * @param  boolean $return 返回模板内容
	 * @param  boolean $isTpl  是否模板文件
	 * @return mixed
	 */
	public function display($tpl = '', $return = false, $isTpl = true) {
		if( $isTpl ){
			if( empty($tpl) ){
				$tpl = 'app/'.APP_NAME . '/view/' . strtolower(CONTROLLER_NAME) . config('TPL.TPL_DEPR') . strtolower(ACTION_NAME);
			}
			if( $this->layout ){
				$this->__template_file = $tpl;
				$tpl = $this->layout;
			}
		}	
		$this->_getView()->assign( get_object_vars($this));
		return $this->_getView()->display($tpl, $return, $isTpl);
	}
	
	/**
	 * 获取模板对象
	 * @return object
	 */
	protected function _getView(){
		static $view;		
		if( !isset($view) ){
			$view = new Template( Config::get('TPL') );
		}		
		return $view;
	}

	/**
	 * 页面跳转
	 * @param  string  $url  跳转地址
	 * @param  integer $code 跳转代码
	 * @return void
	 */
	public function redirect( $url, $code = 302) {
		header('location:' . $url, true, $code);
		exit;
	}

	/**
	 * JS窗口提示
	 * @param  string $msg     提示消息
	 * @param  string $url     跳转URL
	 * @param  string $charset 页面编码
	 * @return void
	 */
	public function alert($msg, $url = NULL, $charset='utf-8'){
		header("Content-type: text/html; charset={$charset}"); 
		$alert_msg="alert('$msg');";
		if( empty($url) ) {
			$go_url = 'history.go(-1);';
		}else{
			$go_url = "window.location.href = '{$url}'";
		}
		echo "<script>$alert_msg $go_url</script>";
		exit;
	}
}